createCharacter method
Makes a character whose feet are at position; 0 when it cannot be
made.
Implementation
@override
int createCharacter(CharacterSettings3D settings, Vector3 position) {
if (_disposed ||
settings.layer < 0 ||
settings.layer > 15 ||
!(settings.radius > 0) ||
settings.halfHeight < 0) {
return 0;
}
final c = FakeCharacter3D._(_next++, settings, position);
characters[c.handle] = c;
if (settings.innerBody) {
final h = c._halfHeight;
final inner = createBody(
BoxShape3D(settings.radius, h, settings.radius),
BodySettings3D(
position: Vector3(position.x, position.y - h, position.z),
type: BodyType3D.kinematic,
layer: settings.layer,
allowSleeping: false,
),
);
// A full world: the character is made without one, as in Jolt.
if (inner != 0) {
bodies[inner]!.character = c.handle;
c.innerBody = inner;
}
}
return c.handle;
}