@threlte/rapier 3.0.0-next.0 → 3.0.0-next.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/components/Attractor/Attractor.svelte +7 -10
- package/dist/components/CollisionGroups/CollisionGroups.svelte +2 -4
- package/dist/components/Debug/Debug.svelte +4 -4
- package/dist/components/Debug/Debug.svelte.d.ts +3 -2
- package/dist/components/World/InnerWorld.svelte +7 -24
- package/dist/components/World/InnerWorld.svelte.d.ts +5 -1
- package/dist/components/World/World.svelte +3 -17
- package/package.json +11 -11
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
<script lang="ts">import { T, useTask } from '@threlte/core';
|
|
2
2
|
import { Group, Vector3 } from 'three';
|
|
3
3
|
import { useRapier } from '../../hooks/useRapier';
|
|
4
|
-
|
|
5
|
-
export let range = 50;
|
|
6
|
-
export let gravityType = 'static';
|
|
7
|
-
export let gravitationalConstant = 6.673e-11;
|
|
4
|
+
let { strength = 1, range = 50, gravityType = 'static', gravitationalConstant = 6.673e-11, ref = $bindable(), ...props } = $props();
|
|
8
5
|
const { world, debug } = useRapier();
|
|
9
6
|
const gravitySource = new Vector3();
|
|
10
|
-
|
|
7
|
+
const group = new Group();
|
|
11
8
|
const calcForceByType = {
|
|
12
9
|
static: (s, m2, r, d, G) => s,
|
|
13
10
|
linear: (s, m2, r, d, G) => s * (d / r),
|
|
@@ -16,7 +13,7 @@ const calcForceByType = {
|
|
|
16
13
|
const impulseVector = new Vector3();
|
|
17
14
|
const bodyV3 = new Vector3();
|
|
18
15
|
function applyImpulseToBodiesInRange() {
|
|
19
|
-
|
|
16
|
+
group.getWorldPosition(gravitySource);
|
|
20
17
|
world.forEachRigidBody((body) => {
|
|
21
18
|
const { x, y, z } = body.translation();
|
|
22
19
|
bodyV3.set(x, y, z);
|
|
@@ -36,11 +33,11 @@ useTask(() => {
|
|
|
36
33
|
</script>
|
|
37
34
|
|
|
38
35
|
<T
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
{
|
|
36
|
+
is={group}
|
|
37
|
+
bind:ref
|
|
38
|
+
{...props}
|
|
42
39
|
>
|
|
43
|
-
<slot {
|
|
40
|
+
<slot ref={group} />
|
|
44
41
|
|
|
45
42
|
{#if $debug}
|
|
46
43
|
<T.Mesh>
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
<script lang="ts">import { setContext } from 'svelte';
|
|
2
2
|
import { writable } from 'svelte/store';
|
|
3
3
|
import { computeBitMask } from '../../lib/computeBitMask';
|
|
4
|
-
|
|
5
|
-
export let filter = undefined;
|
|
6
|
-
export let memberships = undefined;
|
|
4
|
+
let { groups, filter, memberships } = $props();
|
|
7
5
|
const store = writable(computeBitMask(groups, filter, memberships));
|
|
8
|
-
|
|
6
|
+
$effect.pre(() => store.set(computeBitMask(groups, filter, memberships)));
|
|
9
7
|
setContext('threlte-rapier-collision-group', store);
|
|
10
8
|
</script>
|
|
11
9
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { onDestroy } from 'svelte';
|
|
3
3
|
import { BufferAttribute, BufferGeometry } from 'three';
|
|
4
4
|
import { useRapier } from '../../hooks/useRapier';
|
|
5
|
+
let { ref = $bindable(), ...props } = $props();
|
|
5
6
|
const { world, debug } = useRapier();
|
|
6
7
|
const geometry = new BufferGeometry();
|
|
7
8
|
debug.set(true);
|
|
@@ -18,12 +19,11 @@ onDestroy(() => {
|
|
|
18
19
|
</script>
|
|
19
20
|
|
|
20
21
|
<T.LineSegments
|
|
22
|
+
bind:ref
|
|
21
23
|
frustumCulled={false}
|
|
22
24
|
renderOrder={Infinity}
|
|
25
|
+
{...props}
|
|
23
26
|
>
|
|
24
27
|
<T is={geometry} />
|
|
25
|
-
<T.LineBasicMaterial
|
|
26
|
-
vertexColors
|
|
27
|
-
{...$$restProps}
|
|
28
|
-
/>
|
|
28
|
+
<T.LineBasicMaterial vertexColors />
|
|
29
29
|
</T.LineSegments>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import type { Props } from '@threlte/core'
|
|
1
2
|
import { SvelteComponent } from 'svelte'
|
|
2
|
-
import type {
|
|
3
|
+
import type { LineSegments } from 'three'
|
|
3
4
|
|
|
4
|
-
export type DebugProps =
|
|
5
|
+
export type DebugProps = Props<LineSegments>
|
|
5
6
|
|
|
6
7
|
export default class Debug extends SvelteComponent<DebugProps> {}
|
|
@@ -1,31 +1,14 @@
|
|
|
1
|
-
<script
|
|
2
|
-
context="module"
|
|
3
|
-
lang="ts"
|
|
4
|
-
>import { onDestroy, setContext, tick } from 'svelte';
|
|
1
|
+
<script lang="ts">import { onDestroy, setContext, tick } from 'svelte';
|
|
5
2
|
import { useFrameHandler } from '../../hooks/useFrameHandler';
|
|
6
3
|
import { createRapierContext } from '../../lib/createRapierContext';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<script lang="ts">export let gravity = [0, -9.81, 0];
|
|
10
|
-
export let rawIntegrationParameters = undefined;
|
|
11
|
-
export let rawIslands = undefined;
|
|
12
|
-
export let rawBroadPhase = undefined;
|
|
13
|
-
export let rawNarrowPhase = undefined;
|
|
14
|
-
export let rawBodies = undefined;
|
|
15
|
-
export let rawColliders = undefined;
|
|
16
|
-
export let rawImpulseJoints = undefined;
|
|
17
|
-
export let rawMultibodyJoints = undefined;
|
|
18
|
-
export let rawCCDSolver = undefined;
|
|
19
|
-
export let rawQueryPipeline = undefined;
|
|
20
|
-
export let rawPhysicsPipeline = undefined;
|
|
21
|
-
export let rawSerializationPipeline = undefined;
|
|
22
|
-
export let rawDebugRenderPipeline = undefined;
|
|
23
|
-
export let stage = undefined;
|
|
4
|
+
let { gravity = [0, -9.81, 0], rawIntegrationParameters, rawIslands, rawBroadPhase, rawNarrowPhase, rawBodies, rawColliders, rawImpulseJoints, rawMultibodyJoints, rawCCDSolver, rawQueryPipeline, rawPhysicsPipeline, rawSerializationPipeline, rawDebugRenderPipeline, stage } = $props();
|
|
24
5
|
const rapierContext = createRapierContext({ x: gravity[0], y: gravity[1], z: gravity[2] }, rawIntegrationParameters, rawIslands, rawBroadPhase, rawNarrowPhase, rawBodies, rawColliders, rawImpulseJoints, rawMultibodyJoints, rawCCDSolver, rawQueryPipeline, rawPhysicsPipeline, rawSerializationPipeline, rawDebugRenderPipeline);
|
|
25
6
|
setContext('threlte-rapier-context', rapierContext);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
7
|
+
$effect.pre(() => {
|
|
8
|
+
if (gravity !== undefined) {
|
|
9
|
+
rapierContext.world.gravity = { x: gravity[0], y: gravity[1], z: gravity[2] };
|
|
10
|
+
}
|
|
11
|
+
});
|
|
29
12
|
useFrameHandler(rapierContext, stage);
|
|
30
13
|
onDestroy(async () => {
|
|
31
14
|
await tick();
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
2
|
import type { WorldProps } from './World.svelte';
|
|
3
3
|
declare const __propDef: {
|
|
4
|
-
props: WorldProps
|
|
4
|
+
props: WorldProps & {
|
|
5
|
+
children?: ((this: void) => typeof import("svelte").SnippetReturn & {
|
|
6
|
+
_: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
|
|
7
|
+
}) | undefined;
|
|
8
|
+
};
|
|
5
9
|
events: {
|
|
6
10
|
[evt: string]: CustomEvent<any>;
|
|
7
11
|
};
|
|
@@ -11,28 +11,14 @@ const initialized = writable(false);
|
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
13
|
<script lang="ts">import InnerWorld from './InnerWorld.svelte';
|
|
14
|
-
|
|
15
|
-
export let gravity = undefined;
|
|
16
|
-
export let rawIntegrationParameters = undefined;
|
|
17
|
-
export let rawIslands = undefined;
|
|
18
|
-
export let rawBroadPhase = undefined;
|
|
19
|
-
export let rawNarrowPhase = undefined;
|
|
20
|
-
export let rawBodies = undefined;
|
|
21
|
-
export let rawColliders = undefined;
|
|
22
|
-
export let rawImpulseJoints = undefined;
|
|
23
|
-
export let rawMultibodyJoints = undefined;
|
|
24
|
-
export let rawCCDSolver = undefined;
|
|
25
|
-
export let rawQueryPipeline = undefined;
|
|
26
|
-
export let rawPhysicsPipeline = undefined;
|
|
27
|
-
export let rawSerializationPipeline = undefined;
|
|
28
|
-
export let rawDebugRenderPipeline = undefined;
|
|
14
|
+
let { gravity, rawIntegrationParameters, rawIslands, rawBroadPhase, rawNarrowPhase, rawBodies, rawColliders, rawImpulseJoints, rawMultibodyJoints, rawCCDSolver, rawQueryPipeline, rawPhysicsPipeline, rawSerializationPipeline, rawDebugRenderPipeline,
|
|
29
15
|
/**
|
|
30
16
|
* This is passed to the useTask handler.
|
|
31
17
|
* Use this to control when the rapier physics engine is updating the scene.
|
|
32
18
|
* @default undefined
|
|
33
19
|
*/
|
|
34
|
-
|
|
35
|
-
let error = false;
|
|
20
|
+
stage } = $props();
|
|
21
|
+
let error = $state(false);
|
|
36
22
|
const init = async () => {
|
|
37
23
|
if ($initialized)
|
|
38
24
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@threlte/rapier",
|
|
3
|
-
"version": "3.0.0-next.
|
|
3
|
+
"version": "3.0.0-next.1",
|
|
4
4
|
"author": "Grischa Erbe <hello@legrisch.com> (https://legrisch.com)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"devDependencies": {
|
|
@@ -8,33 +8,33 @@
|
|
|
8
8
|
"@sveltejs/adapter-auto": "^3.2.0",
|
|
9
9
|
"@sveltejs/kit": "^2.5.5",
|
|
10
10
|
"@sveltejs/package": "^2.3.1",
|
|
11
|
-
"@sveltejs/vite-plugin-svelte": "^3.0
|
|
12
|
-
"@types/node": "^20.12.
|
|
11
|
+
"@sveltejs/vite-plugin-svelte": "^3.1.0",
|
|
12
|
+
"@types/node": "^20.12.7",
|
|
13
13
|
"@types/three": "^0.163.0",
|
|
14
|
-
"@typescript-eslint/eslint-plugin": "^7.
|
|
15
|
-
"@typescript-eslint/parser": "^7.
|
|
14
|
+
"@typescript-eslint/eslint-plugin": "^7.6.0",
|
|
15
|
+
"@typescript-eslint/parser": "^7.6.0",
|
|
16
16
|
"@yushijinhun/three-minifier-rollup": "^0.4.0",
|
|
17
17
|
"eslint": "^8.57.0",
|
|
18
18
|
"eslint-config-prettier": "^9.1.0",
|
|
19
|
-
"eslint-plugin-svelte": "^2.
|
|
19
|
+
"eslint-plugin-svelte": "^2.36.0",
|
|
20
20
|
"prettier": "^3.2.5",
|
|
21
21
|
"prettier-plugin-svelte": "^3.2.2",
|
|
22
22
|
"publint": "^0.2.7",
|
|
23
23
|
"rimraf": "^5.0.5",
|
|
24
|
-
"svelte": "5.0.0-next.
|
|
24
|
+
"svelte": "5.0.0-next.97",
|
|
25
25
|
"svelte-check": "^3.6.9",
|
|
26
26
|
"svelte-preprocess": "^5.1.3",
|
|
27
27
|
"svelte2tsx": "^0.7.6",
|
|
28
28
|
"three": "^0.163.0",
|
|
29
29
|
"tslib": "^2.6.2",
|
|
30
30
|
"type-fest": "^4.15.0",
|
|
31
|
-
"typescript": "^5.4.
|
|
31
|
+
"typescript": "^5.4.5",
|
|
32
32
|
"vite": "^5.2.8",
|
|
33
|
-
"@threlte/core": "8.0.0-next.
|
|
33
|
+
"@threlte/core": "8.0.0-next.2"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
-
"@dimforge/rapier3d-compat": ">=0.
|
|
37
|
-
"svelte": ">=
|
|
36
|
+
"@dimforge/rapier3d-compat": ">=0.12",
|
|
37
|
+
"svelte": ">=5",
|
|
38
38
|
"three": ">=0.152"
|
|
39
39
|
},
|
|
40
40
|
"type": "module",
|