moveCharacter method

  1. @override
void moveCharacter(
  1. int character,
  2. double dt,
  3. Vector3 velocity,
  4. CharacterState3D out, {
  5. required Vector3 stepDown,
  6. required Vector3 stepUp,
})
override

Moves character for one update at velocity: it slides along walls, keeps to the floor (stepDown, pointing down; zero to turn off) and climbs steps up to stepUp (pointing up; zero to turn off). Writes where it ended up into out.

Implementation

@override
void moveCharacter(
  int character,
  double dt,
  Vector3 velocity,
  CharacterState3D out, {
  required Vector3 stepDown,
  required Vector3 stepUp,
}) {
  if (!_myCharacter(character)) {
    _clearState(out);
    return;
  }
  final f = _f;
  f
    ..[0] = velocity.x
    ..[1] = velocity.y
    ..[2] = velocity.z
    ..[3] = _gravity.x
    ..[4] = _gravity.y
    ..[5] = _gravity.z
    ..[6] = stepDown.x
    ..[7] = stepDown.y
    ..[8] = stepDown.z
    ..[9] = stepUp.x
    ..[10] = stepUp.y
    ..[11] = stepUp.z;
  jj_character_step(character, dt, f, f + 3, f + 6, f + 9, _characterState);
  _readState(out);
}