characterContacts method
What character touched in its last update.
Implementation
@override
List<CharacterContact3D> characterContacts(int character) {
if (!_myCharacter(character)) return const [];
var n = jj_character_contacts(character, _contacts, _contactCapacity);
if (n == _contactCapacity) {
jj_character_state(character, _characterState);
final needed = _characterState.ref.contactCount;
if (needed > _contactCapacity) {
_drop(_contacts);
_contactCapacity = needed;
_contacts = _alloc<JJ_CharacterContact>(_contactCapacity);
n = jj_character_contacts(character, _contacts, _contactCapacity);
}
}
return [
for (var i = 0; i < n; i++)
() {
final c = _contacts[i];
return CharacterContact3D(
body: c.body,
character: c.character,
position: Vector3(c.position[0], c.position[1], c.position[2]),
normal: Vector3(c.normal[0], c.normal[1], c.normal[2]),
velocity: Vector3(c.velocity[0], c.velocity[1], c.velocity[2]),
distance: c.distance,
isSensor: c.isSensor,
hadCollision: c.hadCollision,
);
}(),
];
}