Skip to content

Commit 9cda37b

Browse files
committed
fix(rapier): clean up rapier
1 parent 8290542 commit 9cda37b

File tree

4 files changed

+21
-22
lines changed

4 files changed

+21
-22
lines changed

libs/rapier/src/lib/instanced-rigid-bodies.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ const defaultOptions: NgtrRigidBodyOptions = rigidBodyDefaultOptions;
7777
'[quaternion]': 'quaternion()',
7878
'[userData]': 'userData()',
7979
},
80-
imports: [NgtrRigidBody, NgtrRigidBody, NgtrAnyCollider],
80+
imports: [NgtrRigidBody, NgtrAnyCollider],
8181
})
8282
export class NgtrInstancedRigidBodies {
8383
position = input<NgtVector3 | undefined>([0, 0, 0]);
@@ -161,22 +161,22 @@ export class NgtrInstancedRigidBodies {
161161
if (!options.colliders) options.colliders = physicsColliders;
162162

163163
const objectLocalState = getLocalState(this.objectRef.nativeElement);
164-
// track object's children
165-
objectLocalState?.nonObjects();
164+
if (!objectLocalState) return [];
165+
166+
// track object's parent and non-object children
167+
const [parent] = [objectLocalState.parent(), objectLocalState.nonObjects()];
168+
if (!parent || !(parent as Object3D).isObject3D) return [];
166169

167170
return createColliderOptions(this.objectRef.nativeElement, options);
168171
});
169172

170173
constructor() {
171174
extend({ Object3D });
175+
172176
effect(() => {
173-
this.setInstancedMeshMatrixEffect();
177+
const instancedMesh = this.instancedMesh();
178+
if (!instancedMesh) return;
179+
instancedMesh.instanceMatrix.setUsage(DynamicDrawUsage);
174180
});
175181
}
176-
177-
private setInstancedMeshMatrixEffect() {
178-
const instancedMesh = this.instancedMesh();
179-
if (!instancedMesh) return;
180-
instancedMesh.instanceMatrix.setUsage(DynamicDrawUsage);
181-
}
182182
}

libs/rapier/src/lib/mesh-collider.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,18 @@ export class NgtrMeshCollider {
4747
rigidBodyOptions.colliders = this.colliders();
4848

4949
const objectLocalState = getLocalState(this.objectRef.nativeElement);
50+
if (!objectLocalState) return [];
51+
5052
// track object's children
51-
objectLocalState?.nonObjects();
52-
objectLocalState?.objects();
53+
objectLocalState.nonObjects();
54+
objectLocalState.objects();
5355

5456
return createColliderOptions(this.objectRef.nativeElement, rigidBodyOptions, false);
5557
});
5658

5759
constructor() {
5860
extend({ Object3D });
59-
if (!this.objectRef.nativeElement.userData) {
60-
this.objectRef.nativeElement.userData = {};
61-
}
61+
this.objectRef.nativeElement.userData ??= {};
6262
this.objectRef.nativeElement.userData['ngtrRapierType'] = 'MeshCollider';
6363
}
6464
}

libs/rapier/src/lib/physics.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,8 @@ export class NgtrPhysics {
105105
paused = pick(this.options, 'paused');
106106
debug = pick(this.options, 'debug');
107107
colliders = pick(this.options, 'colliders');
108-
gravity = vector3(this.options, 'gravity');
108+
109+
private gravity = vector3(this.options, 'gravity');
109110

110111
private store = injectStore();
111112
private destroyRef = inject(DestroyRef);
@@ -125,8 +126,8 @@ export class NgtrPhysics {
125126
colliderStates: NgtrColliderStateMap = new Map();
126127
rigidBodyEvents: NgtrEventMap = new Map();
127128
colliderEvents: NgtrEventMap = new Map();
128-
beforeStepCallbacks: NgtrWorldStepCallbackSet = new Set();
129-
afterStepCallbacks: NgtrWorldStepCallbackSet = new Set();
129+
private beforeStepCallbacks: NgtrWorldStepCallbackSet = new Set();
130+
private afterStepCallbacks: NgtrWorldStepCallbackSet = new Set();
130131

131132
private eventQueue = computed(() => {
132133
const rapier = this.rapier();

libs/rapier/src/lib/rigid-body.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -486,12 +486,10 @@ export class NgtrRigidBody {
486486
const objectLocalState = getLocalState(this.objectRef.nativeElement);
487487
if (!objectLocalState) return [];
488488

489-
const parent = objectLocalState.parent();
489+
// track object's parent and non-object children
490+
const [parent] = [objectLocalState.parent(), objectLocalState.nonObjects()];
490491
if (!parent || !(parent as Object3D).isObject3D) return [];
491492

492-
// track object's children
493-
objectLocalState?.nonObjects();
494-
495493
return createColliderOptions(this.objectRef.nativeElement, options, true);
496494
});
497495

0 commit comments

Comments
 (0)